// Copyright 2007 Helsinki Institute for Information Technology
// and the authors.
//
// Authors: Ken Rimey <rimey@hiit.fi>

// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation files
// (the "Software"), to deal in the Software without restriction,
// including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software,
// and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

onload = init;

var profile;
var name;

function init()
{
    $('guestbook').innerHTML += '<h2>Sign the guest book:</h2>';
    new Ajax.Request('/info?output=json',
                     { method: 'get', onSuccess: gotInfo });
}

function gotInfo(response)
{
    var info = eval('(' + response.responseText + ')');
    profile = info.default_profile;
    if (profile) {
        new Ajax.Request('/collection/' + profile + '/info/title?output=text',
                         { method: 'get', onSuccess: gotName });
    }
}

function gotName(response)
{
    name = response.responseText;
    $('guestbook').innerHTML += '<input type="text" size="40" id="text" />'
        + '<input type="button" value="Add Entry" onclick="addEntry()" />';
    new Ajax.Request('../guestbook/?output=json&values_only=true&reverse=true',
                     { method: 'get', onSuccess: gotResults });
}

function gotResults(response)
{
    var values = eval('(' + response.responseText + ')').values;
    for (var i = 0; i < values.length; i += 1) {
        if (values[i]) {
            var v = eval('(' + values[i] + ')');
            if (v.profile && v.name && v.text) {
                var a = document.createElement('a');
                a.setAttribute('href', '/profile/' + v.profile);
                a.appendChild(document.createTextNode(v.name));

                var t = document.createTextNode(': ' + v.text);

                var p = document.createElement('p');
                p.appendChild(a);
                p.appendChild(t);

                $('guestbook').appendChild(p);
            }
        }
    }
}

function addEntry()
{
    var entry = { 'text': $F('text'), 'name': name, 'profile': profile };
    new Ajax.Request('../guestbook', {
        method: 'post',
        postBody: Object.toJSON(entry),
        contentType: 'application/json',
        onSuccess: entryAdded
    });
}

function entryAdded(response)
{
    location.reload();
}
